﻿//---------------------------------------------------------------------------------------------
//  Copyright 2009 Jeremy Palenchar
//  http://identitynotes.palenchar.net
//
//  This file is part of the Identity Notes Identity Notes Sample Custom Activity Library.
//
//  The Identity Notes Sample Custom Activity Library is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  The Identity Notes Sample Custom Activity Library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  
//  You should have received a copy of the GNU General Public License
//  along with The Identity Notes Sample Custom Activity Library.  If not, see <http://www.gnu.org/licenses/>.
//--------------------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Linq;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;


namespace IdentityNotes.Examples.CustomActivityLibrary
{
	public partial class GenerateRandomPasswordActivity: Activity
	{
        public static DependencyProperty PasswordLengthProperty = DependencyProperty.Register("PasswordLength", typeof(int), typeof(GenerateRandomPasswordActivity));

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        [Category("Properties")]
        public int PasswordLength
        {
            get { return (int)this.GetValue(GenerateRandomPasswordActivity.PasswordLengthProperty); }
            set { this.SetValue(GenerateRandomPasswordActivity.PasswordLengthProperty, value); }
        }

        public static DependencyProperty RandomPasswordProperty = DependencyProperty.Register("RandomPassword", typeof(string), typeof(GenerateRandomPasswordActivity));

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        [Category("Properties")]
        public string RandomPassword
        {
            get { return (string)this.GetValue(GenerateRandomPasswordActivity.RandomPasswordProperty); }
            set { this.SetValue(GenerateRandomPasswordActivity.RandomPasswordProperty, value); }
        }

        public GenerateRandomPasswordActivity()
		{
			InitializeComponent();
		}
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            this.RandomPassword = Password.Generate(this.PasswordLength);

            return base.Execute(executionContext);
        }
	}
}
